package com.huike.clues.service.impl;

import com.huike.clues.domain.TbActivity;
import com.huike.clues.mapper.TbActivityMapper;
import com.huike.clues.service.ITbActivityService;
import com.huike.common.core.redis.RedisCache;
import com.huike.common.utils.DateUtils;
import com.huike.common.utils.uuid.UUIDUtils;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Service;

import java.util.*;

/**
 * Created with IntelliJ IDEA.
 * @Author: Copyright by jiyuzm
 * @Date: 2023/07/12/12:01
 * @Description: 活动相关接口-TbActivityServiceImpl
 */
@Service
@AllArgsConstructor
public class TbActivityServiceImpl implements ITbActivityService {

    private final TbActivityMapper activityMapper;

    private final RedisCache redisCache;


    /**
     * 根据Id获取活动信息
     * @param id 活动Id
     * @return 信息活动
     */
    @Override
    public TbActivity getById(Long id) {
        TbActivity tbActivity = activityMapper.getById(id);
        return tbActivity;
    }

    /**
     * 新增活动
     * @param tbActivity 传入完整实体类
     */
    @Override
    public void newActivity(TbActivity tbActivity) {

        tbActivity.setCreateTime(DateUtils.getNowDate());
        tbActivity.setCode(UUIDUtils.getUUID());
        tbActivity.setStatus("2");
        //调用方法
        activityMapper.newActivity(tbActivity);
        //从缓存读取编号
        //注释的是：使用redis的方法生成活动编号的相关类方法
        //但是测试中有UUID，所以临时注释 请勿删除
        //loadCode();

    }


    /**
     * 修改活动
     * @param tbActivity 传入实体类
     */
    @Override
    public void modifyActivity(TbActivity tbActivity) {
        activityMapper.updateActivity(tbActivity);
    }

    /**
     * 查询活动管理列表
     * @param tbActivity -
     * @return List
     */
    @Override
    public List<TbActivity> selectActivityList(TbActivity tbActivity) {
        List<TbActivity> list = activityMapper.selectActivityList(tbActivity);
        return list;
    }

    /**
     * 查询活动管理列表
     * @return Map
     */
    @Override
    public Map getCountByStatus() {
        return activityMapper.getCountByStatus();
    }

    /**
     * 删除活动
     * @param ids -
     * @return int
     */
    @Override
    public int deleteActivityByIds(Long[] ids) {
        int rows=activityMapper.deleteActivityByIds(ids);
        return rows;
    }


    //注释的是：使用redis的方法生成活动编号的相关类方法
    //但是测试中有UUID，所以临时注释 请勿删除
    //
    //    /**
    //     * 使用redisCache加载活动编号到缓存中给新增活动调用
    //     */
    //    public void loadCode() {
    //        List<String> codeList= activityMapper.selectAllCode();
    //        Set<String> set= new HashSet<>(codeList);
    //        redisCache.setCacheSet(Constants.ACT_CODE_KEY, set);
    //    }
    //
    //    /**
    //     * 生成活动编号 调用redisCache的方法写缓存
    //     * @return /
    //     */
    //    private String getCode(){
    //        //随机8位编码
    //        String code= StringUtils.getRandom(8);
    //        //店铺校验
    //        Set<String> codeSets =  redisCache.getCacheSet(Constants.ACT_CODE_KEY);
    //        if(codeSets.contains(code)){
    //            return getCode();
    //        }
    //        return code;
    //    }
}
